unit ShapeComm ;

interface

uses
    Windows,
    Messages,
    SysUtils,
    Classes,
    Graphics,
    Controls,
    Forms,
    Dialogs,
    ActnList,
    ComCtrls,
    ToolWin,
    Menus,
    ImgList,
    ExtCtrls,
    dtpDocument,
    dtpPage,
    dtpShape,
    dtpTextShape,
    StdCtrls,
    dtpExposedMetafile,
    ExtDlgs,
    Gr32v1_5,
    dtpGroupShape,
    OptionRefs,
    Printers,
    dtpEffectShape,
    dtpColoreffects,
    dtpShadowEffects,
    ColorPickerButton,
    Jpeg,
    Math,
    ShellApi,
    dtpPolygonShape,
    dtpMemoShape,
    dtpLineShape,
    dtpResource,
    XPMan,
    VTHeaderPopup,
    VirtualTrees,
    VirtualScrollbox,
    XMLDocuments ;

type
    TShapeModule = class( TDataModule )
        ActionList : TActionList ;
        actAddLine : TAction ;
        actAddModule : TAction ;
        actAdd : TAction ;
        pmShapeAdd : TPopupMenu ;
        AddTextShape1 : TMenuItem ;
        acShapeAddPolyline1 : TMenuItem ;
        acShapeAddLine1 : TMenuItem ;
        N12 : TMenuItem ;
        AddEllipse1 : TMenuItem ;
        AddRectangle1 : TMenuItem ;
        Addroundedrectangle1 : TMenuItem ;
        procedure actAddLineExecute( Sender : TObject ) ;
        procedure actAddModuleExecute( Sender : TObject ) ;
        procedure actAddLineUpdate( Sender : TObject ) ;
        procedure actAddModuleUpdate( Sender : TObject ) ;
        procedure actAddExecute( Sender : TObject ) ;
    private
        { Private declarations }
    public
        { Public declarations }
    end ;

var
    ShapeModule     : TShapeModule ;

implementation

{$R *.dfm}
uses
    frmMedax ;

var
    xmlDoc          : TXMLDocument ;

procedure TShapeModule.actAddLineExecute( Sender : TObject ) ;
var
    aLine           : TdtpLineShape ;
begin
    aLine := TdtpLineShape.Create ;
    aLine.LineWidth := 0.5 ;
    frmMain.DocumentSchema.ShapeAdd( aLine ) ;
    aLine.DocLeft := 25.4 + 25.4 ;
    aLine.DocTop := 25.4 + 2.54 ;
    aLine.DocRight := 25.4 + 2.54 + 63.5 ;
    aLine.DocBottom := 25.4 + 2.54 ;
end ;

procedure TShapeModule.actAddModuleExecute( Sender : TObject ) ;
var
    aModule         : TdtpRectangleShape ;
    aLine           : TdtpLineShape ;
    p               : TFloatPoint ;
begin
    aModule := TdtpRectangleShape.Create ;                  // dtpPolygonShape.
    aModule.OutlineWidth := 0.5 ;
    aModule.OutlineColor := clBlack ;
    aModule.FillColor := clYellow ;
    aModule.FillAlpha := 216 ;
    aModule.AllowResize := False ;
    aModule.AllowRotate := False ;

    aLine := TdtpLineShape.Create ;
    aLine.LineWidth := 0.5 ;
    p.X := 25.4 ;
    p.Y := 2.54 ;
    aLine.Points[ 0 ] := p ;
    p.X := 25.4 + 2.54 ;
    p.Y := 2.54 ;
    aLine.Points[ 1 ] := p ;
    aModule.ShapeAdd( aLine ) ;

    frmMain.DocumentSchema.ShapeAdd( aModule ) ;

    aModule.DocLeft := 25.4 ;
    aModule.DocTop := 25.4 ;
    aModule.DocRight := 25.4 + 25.4 ;
    aModule.DocBottom := 127 ;
end ;

procedure TShapeModule.actAddLineUpdate( Sender : TObject ) ;
begin
    with frmMain.DocumentSchema do
        actAddLine.Enabled := assigned( CurrentPage ) ;
end ;

procedure TShapeModule.actAddModuleUpdate( Sender : TObject ) ;
begin
    with frmMain.DocumentSchema do
        actAddModule.Enabled := assigned( CurrentPage ) ;
end ;

procedure TShapeModule.actAddExecute( Sender : TObject ) ;
var
    p               : TPoint ;
begin
    with frmMain do begin
        p := Point( ToolButtonAdd.Left, ToolButtonAdd.Top + ToolButtonAdd.Height ) ;
        p := ToolBar.ClientToScreen( p ) ;
        ToolBar.PopupMenu.Popup( p.X, p.Y + ToolBar.BorderWidth ) ;
    end ;
end ;

initialization
    xmlDoc := TXMLDocument.Create ;
    xmlDoc.XmlFormat := xfReadable ;

finalization
    xmlDoc.SaveToFile( 'c:\temp\test.xml' ) ;
    xmlDoc.Free ;

end.

